home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Taifun
/
Taifun 099 (1989-05-15)(Ossowski, Stefan)(DE)(PD).zip
/
Taifun 099 (1989-05-15)(Ossowski, Stefan)(DE)(PD).adf
/
PCQ
/
Examples
/
Copier.p
< prev
next >
Wrap
Text File
|
1989-03-31
|
2KB
|
75 lines
Program Copy;
{$I "Include/DOS.i"}
var
InputFileName : String;
OutputFileName : String;
Infile : FileHandle;
Outfile : FileHandle;
Position : Integer;
Buffer : ^array [1..1000] of char;
Function GetFileName(var index : Integer): String;
{
This function requires that each file name in the command
line have at least one character of disposable delimeter
after it. It starts looking from index, and returns a
pointer into the command line. Index ends up as the next
unused character.
}
var
name : String;
begin
while ((CommandLine[index] = ' ') or (CommandLine[index] = chr(9))) and
(index < 128) do
index := index + 1;
if index >= 128 then begin
writeln('Bad file name.');
exit(20);
end;
name := String(adr(CommandLine[index]));
while (ord(CommandLine[index]) > ord(' ')) and
(ord(CommandLine[index]) < 128) and
(index < 128) do
index := index + 1;
if index >= 128 then begin
writeln('Bad file name.');
exit(20);
end;
CommandLine[index] := chr(0);
index := index + 1;
GetFileName := name;
end;
begin
Position := 1;
InputFileName := GetFileName(Position);
OutputFileName := GetFileName(Position);
Infile := DOSOpen(InputFileName, ModeOldFile);
if Infile <> nil then begin
Outfile := DOSOpen(OutputFileName, ModeNewFile);
if Outfile <> nil then begin
New(Buffer);
repeat
Position := DOSRead(Infile, Buffer, 1000);
if Position > 0 then begin
Position := DOSWrite(Outfile, Buffer, Position);
if Position = 0 then begin
writeln('Write error');
exit(20);
end;
end;
until Position = 0;
Dispose(Buffer);
DOSClose(Outfile);
end else
writeln('Could not open output file.');
DOSClose(Infile);
end else
writeln('Could not open input file.');
end.